#pragma once
#include <d3d11.h>
#include <d3dx10math.h>

namespace Graphics
{
struct LightBufferType
{
	D3DXVECTOR4 AmbientColor;
	D3DXVECTOR4 DiffuseColor;
	D3DXVECTOR3 Direction;
	float SpecularPower;
	D3DXVECTOR4 SpecularColor;
	//float Padding; //Adding extra padding so structure is a multipe of 16 for CreateBuffer function requirements
};
class Light
{
public:
	Light(void);

	~Light(void);

	void Initialize();

	void Deinitialize();

	void SetDirection(float x, float y, float z);

	void SetDiffuseColor(float r, float g, float b, float a);

	D3DXVECTOR3 GetDirection();

	D3DXVECTOR4 GetDiffuseColor();

	D3DXVECTOR4 GetAmbientColor();

	void SetAmbientColor(float r, float g, float b, float a);

	void SetSpecularPower(float power);

	void SetSpecularColor(float r, float g, float b, float a);

	LightBufferType GetLightBufferInfo();
	
private:
	D3DXVECTOR3 mDirection; 
	D3DXVECTOR4 mDiffuseColor;
	D3DXVECTOR4 mAmbientColor;
	float mSpecularPower;
	D3DXVECTOR4 mSpecularColor;
};
}